package com.i7time.service;

import com.i7time.entity.SceneInfo;
import com.i7time.entity.User;

import java.util.List;

/**
 * 场景接口
 * Created by pengweiyuan on 6/7/16.
 */
public interface SceneService {
    /**
     * 场景注册（商家后台）
     * @param userId 用户ID
     * @param name 场景名字
     * @param addr 场景地址
     * @param mail 场景mail
     * @param tel 场景电话
     * @param city 场景所在城市
     * @param avatar 场景头像
     * @param pictures 场景图片
     * @param latitude 场景经度
     * @param longtitude 场景纬度
     * @param geohash 场景位置 geo
     * @param live_channel 场景直播连接
     * @param up_url 直播的上传url
     * @param down_url 直播的下载的url
     * @return
     */
    SceneInfo SceneRegister(long userId, String name, String addr, String mail, String tel,
                            String city, String avatar, String pictures, String latitude, String longtitude,
                            String geohash, String live_channel, String up_url, String down_url);


    /**
     * 获取场景列表
     * @return
     */
    List<SceneInfo>getSceneList(String city,double latitude,double longtitude, int page);


    /**
     * 根据用户ID获得场景
     * @param userId
     * @return
     */
    SceneInfo getSceneByUserId(long userId);


    /**
     * 获取场景的详情页信息
     * @param sceneId 场景ID
     * @return
     */
    SceneInfo getSceneDetail(long sceneId);

    /**
     * 加入场景
     * @param userId 用户ID
     * @param sceneId 场景ID
     * @return
     */
    boolean signIn(long userId,long sceneId);


    /**
     * 返回用户和场景的距离
     * @param sceneId 用户ID
     * @param userlongtitude
     * @param userlatitude 经纬度
     * @return 距离:米
     */
    long getDistance(long sceneId,double userlongtitude,double userlatitude);


    /**
     * 迁出场景
     * @param userId
     * @param sceneId 场景ID
     * @return
     */
    boolean signOut(long userId,long sceneId);

    /**
     * 获取场景的直播状态
     * @param sceneId
     * @return
     */
    int getLiveStatus(long sceneId);//在直播返回1,不在直播返回0



    /**
     *  获取场景里正在直播的人数
     * @param sceneId
     * @return
     */
    long getOnlivePeoples(long sceneId);


    /**
     * 获得场景中在线的人数
     * @param sceneId
     * @return
     */
    long getOnLinePeoples(long sceneId);


    /**
     * 获取场景里面的人
     * @param sceneId
     * @return
     */
    List<User>getRoomMembers(long sceneId);

    /**
     * 获取场景里面正在直播的人
     * @param sceneId
     * @return
     */
    List<User>getRoomLiveMembers(long sceneId);

    /**
     * 判断用户是否在场景的在线人员名单里
     * @param userid 用户ID
     * @param sceneid 场景ID
     * @return
     */
    boolean isUserInScene(long userid,long sceneid);

}
